/// Class inheritance involving abstract, open, and final classes.
module com.package1.classInheritance

abstract class MyClass1 {
  /// Inherited property comment.
  abstract property1: Boolean

  /// function method1 in class MyClass1.
  abstract function method1(arg: String): Boolean
}

open class MyClass2 extends MyClass1 {
  property1: Boolean = false
  property2: String = ""

  /// function method1 in class MyClass2.
  function method1(arg: String): Boolean = Undefined()
  function method2(arg: String): Boolean = Undefined()
}

abstract class MyClass3 extends MyClass2 {
  property1: Boolean = true
  function method1(arg: String): Boolean = Undefined()
}

class MyClass4 extends MyClass2 {
  property4: String = ""
  function method3(arg: String): Boolean = Undefined()
}
